/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Ventas.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.Presentacion;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;
import com.dp1.pucp.Ventas.DAO.PresentacionDAO;
import com.dp1.pucp.Ventas.VIsta.MantPresentacionGUI2;
import com.dp1.pucp.Ventas.VIsta.PresentacionGUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author ubuntu64
 */
public class MantPresentacionControlador {

    private PresentacionDAO dao;
    private MantPresentacionGUI2 mantPresentacionGUI;
    private ArrayList<String> listaEstado;
    private ArrayList<Presentacion> listaPresentaciones;

    public MantPresentacionControlador(PresentacionDAO dao, MantPresentacionGUI2 vista) {
        this.dao = dao;
        this.mantPresentacionGUI = vista;

        this.mantPresentacionGUI.addNuevoListener(new crearPresentacionListener());
        this.mantPresentacionGUI.addBuscarListener(new buscarPresentacionListener());
        this.mantPresentacionGUI.addEditarListener(new editarPresentacionListener());
        this.mantPresentacionGUI.addEliminarListener(new eliminarPresentacionListener());
        this.mantPresentacionGUI.addLimpiarListener(new limpiarPresentacionListener());
        this.llenarEstadoCombo();

    }

    class crearPresentacionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            PresentacionGUI v = new PresentacionGUI(mantPresentacionGUI.getPadre(), true);
            PresentacionControlador c = new PresentacionControlador(dao, v, null);
            LogDAO.insertarLog(MainController.usuario, "Ingresar Agregar Presentacion");
            
            v.setVisible(true);
        }
    }

    class buscarPresentacionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int estado = mantPresentacionGUI.getEstado();


            listaPresentaciones = dao.listarPresentaciones(estado);
            mantPresentacionGUI.llenaGrilla(listaPresentaciones);
        }
    }

    private void llenarEstadoCombo() {
        listaEstado = dao.listarEstado();
        mantPresentacionGUI.llenaComboEstado(listaEstado);
    }

    class editarPresentacionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int indice = mantPresentacionGUI.getFilaSel();
            if (indice != -1) {
                PresentacionGUI presentacionGUI = new PresentacionGUI(mantPresentacionGUI.getPadre(), true);
                Presentacion presentacion = listaPresentaciones.get(indice);
                PresentacionControlador c = new PresentacionControlador(dao, presentacionGUI, presentacion);
                LogDAO.insertarLog(MainController.usuario, "Ingresar Editar Presentacion");
            
                presentacionGUI.setVisible(true);
            }
            else {
                Validaciones.mostrarMensajeErrorVal("Debe seleccionar una presentación");
            } 
                

        }
    }

        class limpiarPresentacionListener implements ActionListener {

            @Override
            public void actionPerformed(ActionEvent e) {
                mantPresentacionGUI.limpiar();
                listaPresentaciones = null;
                mantPresentacionGUI.llenaGrilla(listaPresentaciones);
            }
        }

            class eliminarPresentacionListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent e) {
                    String[] lista = {"Sí", "No"};
                    int sel = mantPresentacionGUI.getFilaSel();
                    if (sel != -1) {
                        Presentacion u = listaPresentaciones.get(sel);
                        if (u.getEstado() == 1) {
                            if (JOptionPane.showOptionDialog(mantPresentacionGUI, "¿Desea eliminar a esta presentación?",
                                    "Elimiar Presentacion", JOptionPane.YES_NO_OPTION, 0, null, lista, lista[1]) == 0) {

                                u.setEstado(0);
                                dao.guardarPresentacion(u);
                                LogDAO.insertarLog(MainController.usuario, "Eliminar Presentacion");
            
                                JOptionPane.showMessageDialog(mantPresentacionGUI, "Se dio de baja a la presentación con éxito");
                                listaPresentaciones = dao.listarPresentaciones(1);
                                mantPresentacionGUI.llenaGrilla(listaPresentaciones);

                            }
                        } else {
                            JOptionPane.showMessageDialog(mantPresentacionGUI, "La presentacion ya esta inactiva");

                        }
                    } else {

                        JOptionPane.showMessageDialog(mantPresentacionGUI, "Debe seleccionar una presentación");
                    }
                }
            }
        
}
    

